package asientos;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import despegar.utiles.Fecha;

import usuarios.Usuario;
import aerolineas.Aerolinea;

public interface Vuelo {
	public String getCodigoDeVuelo();
	
	public BigDecimal getPrecio();
	/*
	 * Para poder recargarSegunUsuario en escalas, donde se recarga cada asiento..
	 * Pero no se deberia poder setear el precio de una Escala, medio turbio.
	 */
	public void setPrecio(BigDecimal precio); 
	
	
	public boolean esSuperOferta();
	public void recargarSegunUsuario(Usuario unUsuario, int unRecargo);
	
	// TODO: no tienen sentido estos mensajes en Vuelo, s� en Asiento.
	public UbicacionesAsiento getUbicacion();
	public ClaseDeAsiento getClase();
	
	public boolean sosDeLaAerolinea(Aerolinea unaAerolinea);
	public String getAerolinea();
	public String getOrigen();
	public String getDestino();
	public Integer getNumeroDeAsiento();
	public Fecha getFechaSalida();
	public Fecha getFechaLlegada();
	public String getHoraSalida();
	public String getHoraLlegada(); 
	public double getTiempoDeVuelo();
	public double getPopularidad();
	public List<String> getClasesDeAsientos();
		
	public void reservar(Usuario usuarioQueReserva);
	public void comprar(Usuario usuarioQueCompra);
	
	public boolean estaLibre();

	public EstadosAsiento getEstado();
	public void registrarCompra();
	
	public void registrarReserva(String dniDelUsuarioQueReservo);
}